#!/bin/bash

# 检查参数数量是否正确（允许3个、4个、5个参数）
if (( $# < 1 )); then
    echo "必须提供车型标识，如b60vs"
    echo 'ALLOWED_VALUES=("b41vs" "b60vs" "c37tb" "c46" "c66tb" "n5-8775" "n5" "n623" "n624" "n80_8155" "b40l")'
    echo ''
    echo "用法1: $0 <车型标识>"
    echo "用法2: $0 <车型标识> <channel名称> <版本名> <版本号> <APK文件路径>"
    echo "示例1: $0 b60vs"
    echo "示例2: $0 b60vs release 250916-1517 4504 ./custom.apk"
    echo "只有车型标识参数时，默认使用define_apk_path和pack_apk_path的值，所以需要脚本中修改为适合自己电脑的两个值"
    exit 1
fi

# 提取参数
# 第一个参数，用于统一版本标识
car_identifier=$1       
# 第二个参数
car_channel_dir=$2          # oss车型下的子目录
if [ -z "${car_channel_dir}" ]; then
    car_channel_dir="release"
fi
# 第三个参数，格式如250916-1517
version_name=$3   
# 第四个参数，格式如4504       
version_code=$4             
# 第五个参数
apk_path=$5
define_apk_path="/Users/mac/Desktop/workspaces/sbc77/lyra-auto/lyra-daemon/app/build/outputs/apk/auto/release/lyra-daemon-auto-release.apk"
pack_apk_path="/Users/mac/Desktop/workspaces/sbc77/lyra-auto/" 


# 定义允许的参数值列表，在oss中要有对应目录
ALLOWED_VALUES=("b41vs" "b60vs" "c37tb" "c46" "c66tb" "n5-8775" "n5" "n623" "n624" "n80_8155" "b40l")

# 检查版本参数是否在允许的列表中
VALID=false
for VALUE in "${ALLOWED_VALUES[@]}"; do
    if [ "$car_identifier" = "$VALUE" ]; then
        VALID=true
        break
    fi
done

# 根据检查结果输出信息
if [ "$VALID" = true ]; then
    echo "验证成功: 参数 '$car_identifier' 是有效的"
    # 这里可以添加调用version_info.sh的命令
    # version_info.sh "$@"
else
    echo "错误: 参数 '$car_identifier' 无效"
    echo "允许的参数值为: ${ALLOWED_VALUES[*]}"
    exit 1
fi

## 编译apk
if [ -z "$apk_path" ]; then
    apk_path=${define_apk_path}
    cd ${pack_apk_path}
    # 读取 VERSION_DATE 的值
    version_name=$(grep '^VERSION_DATE=' version.properties | cut -d'=' -f2)
    version_code=$(grep '^VERSION_CODE=' version.properties | cut -d'=' -f2)
    if [ -z "$version_name" ]; then
        echo "version_name 默认也为空"
        exit 1
    fi
    if [ -z "$version_code" ]; then
        echo "version_code 默认也为空"
        exit 1
    fi
    ./gradlew lyra-daemon:clean && ./gradlew lyra-daemon:assembleautoRelease
fi

echo "1=$car_identifier; 2=$car_channel_dir; 3=$version_name; 4=$version_code; 5=$apk_path"

# 验证APK文件是否存在
if [ ! -f "$apk_path" ]; then
    echo "错误：APK文件不存在 - $apk_path"
    exit 1
fi

# 获取APK所在目录和文件名（确保ZIP与APK在同级目录）
apk_dir=$(dirname "$apk_path")
apk_filename=$(basename "$apk_path")
# zip_filename="${apk_filename%.apk}.zip"
zip_filename="solution-beiqi-${car_identifier}_7.0.cc_${version_name}-0.zip"
zip_path="${apk_dir}/${zip_filename}"  # 明确指定ZIP路径与APK在同一目录

# 压缩APK为ZIP包（同级目录，且解压后不带目录）
echo "正在将APK压缩为ZIP包（与APK在同级目录）..."
# 进入APK目录，仅压缩文件本身，不包含路径信息
(cd "$apk_dir" && zip -q -j "$zip_filename" "$apk_filename")

if [ $? -ne 0 ]; then
    echo "错误：压缩APK文件失败"
    exit 1
fi

echo "上传oss ..."
# 上传oss
# ossutil api put-object --bucket aispeech-lyra --key beiqi/n5-8775/temp/lyra-assistant-n58775-release-2511131547.apk --body file:///Users/mac/Desktop/workspaces/sbc-std/lyra-assistant/outApk/n58775/lyra-assistant-n58775-release-2511131547.apk
ossutil api put-object --bucket aispeech-lyra --key beiqi/${car_identifier}/${car_channel_dir}/$zip_filename --body file://$zip_path
echo "上传oss end ..."

if [ $? -ne 0 ]; then
    echo "错误：上传APK文件失败"
    exit 1
fi

# 从时间标识提取日期部分并转换为2025-09-16格式
date_part=${version_name%-*}  # 提取250916部分
year="20${date_part:0:2}"        # 提取年份25 -> 2025
month=${date_part:2:2}           # 提取月份09
day=${date_part:4:2}             # 提取日期16
release_date="${year}-${month}-${day}"  # 组合为2025-09-16

# 计算ZIP包的MD5值
echo "正在计算ZIP包的MD5值..."
md5_value=$(md5 -q "$zip_path")

# 输出版本相关信息（用特殊符号隔开）
echo "=========================================="
echo "发版时间：${release_date}"
echo "版本链接：http://aispeech-lyra.oss-cn-hangzhou.aliyuncs.com/beiqi/${car_identifier}/${car_channel_dir}/solution-beiqi-${car_identifier}_7.0.cc_${version_name}-0.zip"
echo "版本信息：\"versionCode\":${version_code},\"versionName\":\"7.0.cc_${version_name}.1\""
echo "MD5：${md5_value}"
echo "自测报告：https://alidocs.dingtalk.com/i/nodes/ydxXB52LJq7evKdKuvrlKGPNWqjMp697?iframeQuery="
echo "修改点："
echo "=========================================="

# 提示信息
echo "提示：ZIP包已生成在APK同级目录 - open $(dirname $zip_path)"
echo "提示：ZIP包已生成在APK同级目录 - $zip_path"
echo "提示：ZIP包解压后直接显示APK文件，不包含任何目录结构"
    